package com.code2roc.jarmanage.servlet.nginx;

import com.code2roc.jarmanage.db.ConfigDB;
import com.code2roc.jarmanage.model.ConfigDO;
import com.code2roc.jarmanage.model.FileInfo;
import com.code2roc.jarmanage.model.Result;
import com.code2roc.jarmanage.util.CommonUtil;
import com.code2roc.jarmanage.util.ConvertUtil;
import com.code2roc.jarmanage.util.EncryptUtil;
import com.code2roc.jarmanage.util.FileUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class NginxFileListServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Result result = Result.okResult();
        HashMap paramMap = CommonUtil.getParamMap(req);
        String prefix = ConvertUtil.convert2String(paramMap.get("prefix"));
        ConfigDO configDO = ConfigDB.selectOne("NGINX_HOME");
        String basePath = configDO.getConfigValue() + File.separator + "html" + File.separator;
        String depolyPath = basePath + prefix;
        List<FileInfo> fileInfoList = new ArrayList<>();
        File file = new File(depolyPath);
        File[] fileList = file.listFiles();
        for (File f : fileList) {
            FileInfo fileInfo = new FileInfo();
            fileInfo.setFileName(f.getName());
            try {
                fileInfo.setFileID(EncryptUtil.encryptByMD5(f.getName()));
            } catch (Exception e) {

            }
            fileInfo.setCreateDate(FileUtil.getCreationTime(f));
            fileInfo.setLastModifyDate(FileUtil.getLastModifyTime(f));
            fileInfo.setCheckDir(f.isDirectory());
            fileInfoList.add(fileInfo);
        }
        result.add("obj", fileInfoList);
        resp.getWriter().println(result.toString());
    }
}
